package org.footballmanager.pandafootball.system.domain.enums;

import org.footballmanager.pandafootball.common.converter.BaseEnum;

import java.util.HashMap;
import java.util.Map;

/**
 * 联赛状态枚举类
 * 包括西甲、英超、德甲、意甲、葡超、法甲、中超等
 * 大洲范围内的比赛，如欧洲冠军联赛、亚洲冠军联赛
 * 西班牙甲级联赛（西甲）、英格兰超级联赛（英超）、德国甲级联赛（德甲）、意大利甲级联赛（意甲）、葡萄牙超级联赛（葡超）、法国甲级联赛（法甲）、荷兰甲级联赛（荷甲）等
 * 使用枚举类可以有效的节省代码行数，调整系统的耦合度
 *
 * @author chenjian
 * @since 2017年9月27日上午10:57:28
 */
public enum LSZT implements BaseEnum<Integer> {
    COUNTRY(0, "国家联赛"), NORMAL(1, "大洲联赛");

    /* 值 */
    private int value;

    /* 文字 */
    private String text;

    /* Map对象 */
    private static Map<Integer, LSZT> valueMap = new HashMap<>();

    static {
        for(LSZT mail : LSZT.values()) {
            valueMap.put(mail.getValue(), mail);
        }
    }

    /**
     * 构造方法
     * @param value
     * @param text
     */
    LSZT(int value, String text){
        this.value = value;
        this.text = text;
    }

    /**
     * 获取值
     * @param value 参数
     * @return 返回值
     */
    public static LSZT getByValue(int value) {
        LSZT result = valueMap.get(value);
        if(result == null) {
            throw new IllegalArgumentException("No element matches " + value);
        }
        return result;
    }

    /**
     * 获取文字
     * @param text 参数
     * @return 返回值
     */
    public static LSZT getByText(String text) {
        for (LSZT e : values()) {
            if(e.getText().equals(text)) {
                return e;
            }
        }
        return null;
    }

    @Override
    public String getText() {
        return text;
    }

    @Override
    public Integer getValue() {
        return value;
    }

}